/*
  学习目标：useState 实现类型提示

*/

// 1. 初始值类型，决定第一个参数count的类型
// 2. setCount是函数，函数接收的参数类型，要求是初始值类型
// 3. 返回值是元组，类型固定

// 需求：加上上述3条类型

type UseStateFn = <T>(value: T) => [T, (newVlaue: T) => void];
const useState: UseStateFn = (initVlaue) => {
  const setStateFn = (newValue) => {
    // ..。省略更新的代码
  };
  return [initVlaue, setStateFn];
};

const [count, setCount] = useState(0);
setCount(123);

const [msg, setMsg] = useState('123');
setMsg('123');
